#pragma once

#include <iostream>
#include <vector>
#include <ctime>
typedef void (*task_t)();

/////////////////////////////////////////////////////////////////
// debug 任务函数
void Print_log()
{
    std::cout << "我是一个打印日志的任务 " << std::endl;
}

void Download_file()
{
    std::cout << "我是一个下载文件的任务 " << std::endl;
}
void Upload_file()
{
    std::cout << "我是一个上传文件的任务 " << std::endl;
}
// void Compress_file()
// {
//     std::cout << "我是一个压缩文件的任务 "  << std::endl;
// }
/////////////////////////////////////////////////////////////////

class TaskManager
{
public:
    TaskManager()
    {
        srand((unsigned)time(NULL));
    }
    void register_task(task_t t)
    {
        _tasks.push_back(t);
    }
    int Code()
    {
        return rand() % _tasks.size();
    }

    void Execute(int code)
    {
        if (code >= 0 || code < (int)_tasks.size())
        {
            _tasks[code](); // 函数指针直接调用
        }
    }
    ~TaskManager() {}

private:
    std::vector<task_t> _tasks;
};